package com.example.saifly.inPagePlan.chat;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;

import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.common.Activity;
import com.example.common.Application.MyApplication;
import com.example.saifly.R;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Author:ShengyiJi
 * @Description:聊天页面
 * @Date:
 */
@SuppressLint("Registered")
public class ChatActivity extends Activity {

    private RecyclerView rvChat;
    private List<ChatItem> itemList=new ArrayList<>();
    private ImageView ivReturn;
    private Button send;
    private MyAdapter myAdapter;
    private EditText etContent;
    private SharedPreferences sharedPreferences= MyApplication.getContext().getSharedPreferences("config", Context.MODE_PRIVATE);

    private String nickname;
    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");// HH:mm:ss
    private String url;
    private Date date = new Date(System.currentTimeMillis());




    /**
     * 设置聊天记录item
     */
    private class ChatItem{
        String name;
        String time;
        String text;
        String image;
        boolean leftright;

        public ChatItem(String name, String time, String text, String image, boolean leftright) {
            this.name = name;
            this.time = time;
            this.text = text;
            this.image = image;
            this.leftright = leftright;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getTime() {
            return time;
        }

        public void setTime(String time) {
            this.time = time;
        }

        public String getText() {
            return text;
        }

        public void setText(String text) {
            this.text = text;
        }

        public String getImage() {
            return image;
        }

        public void setImage(String image) {
            this.image = image;
        }

        public boolean isLeftright() {
            return leftright;
        }

        public void setLeftright(boolean leftright) {
            this.leftright = leftright;
        }
    }

    @Override
    protected int getContentLayoutId() {
        return R.layout.activity_chat;
    }

    @Override
    protected void init() {
        super.init();

        ivReturn = findViewById(R.id.chat_return);
        send=findViewById(R.id.chat_send);
        rvChat = findViewById(R.id.chat_rv);
        etContent=findViewById(R.id.chat_edit_text);

        initData();


        initList();

        initRecyclerView();


        initSendMessage();
        doJump();

    }
    private void initData(){
        nickname=sharedPreferences.getString("nickname","用户");
        url=sharedPreferences.getString("portrait","@drawable/home_about_symble");
    }

    private void initSendMessage(){
        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String content=etContent.getText().toString().trim();
                if(content.length()!=0){
                    Date date = new Date(System.currentTimeMillis());
                    ChatItem item=new ChatItem(nickname,simpleDateFormat.format(date),etContent.getText().toString().trim(),url,false);
                    itemList.add(item);
                    myAdapter.notifyItemChanged(itemList.size());
                    etContent.setText("");
                    rvChat.scrollToPosition(itemList.size()-1);
                    dealWithContent(content);
                }
            }
        });
    }

    private void dealWithContent(String content){
        ChatItem item=new ChatItem("小肺",simpleDateFormat.format(date),"h","@drawable/home_about_symble",true);
        if(content.contains("饮食")){
            item.setText("饮食要清淡，少油腻少甜食易于消化，富有营养，忌食刺激性食物，蛋奶等优质蛋白质的摄入非常重要！");

        }
        else if(content.contains("气候")){
            item.setText("秋冬季节，由于气候寒冷，温差变化大，呼吸道抵抗力下降，使人容易受到病毒细菌感染，一定要注意预防感冒和呼吸道感染，当心病情加重。");
        }
        else if(content.contains("温度")){
            item.setText("在天气骤变时，要注意保暖，及时增加衣服，室内温度要保持相对稳定，冬季室内温度应在18℃～20℃为宜，过冷、过热对慢阻肺患者都是不利的。");
        }
        else if(content.contains("湿度")){
            item.setText("家中湿度最好能控制在40%-70%，最高不要超过90%，有条件的话可以通过抽湿机进行抽湿，保持室内湿度适宜。");
        }
        else if(content.contains("日常")){
            item.setText("室内经常保持空气流通，平时注意呼吸操锻炼，加强营养，忌辛辣刺激食物，一定要戒烟，并减少有害气体的吸入，保持心情愉悦。");
        }
        else if(content.contains("预防")){
            item.setText("平时保证充足的睡眠，注意避免二手烟等有害气体的吸入，遵医嘱用药，坚持氧疗。不要去人员太密集的公共场所，不要太劳累。");
        }
        else if(content.contains("注意")){
            item.setText("忌暴饮暴食，禁辛辣刺激食物，注意口腔皮肤清洁，有效排痰。天气寒冷时及时添衣，注意避免二手烟等有害气体的吸入。");
        }
        else{
            item.setText("未找到相关内容喔，您可以尝试输入「饮食」、「气候」、「温度」、「湿度」、「日常」、「预防」、「注意」等关键词。");
        }

        itemList.add(item);
        myAdapter.notifyItemChanged(itemList.size());
        rvChat.scrollToPosition(itemList.size()-1);
    }

    private void doJump()
    {
        ivReturn.setOnClickListener(view -> finish());
    }
    /**
     * 初始化聊天记录
     */
    private void initList(){
        ChatItem item=new ChatItem("小肺",simpleDateFormat.format(date),
                "亲爱的患者您好！我是智能机器人小肺，您可以询问我一些慢阻肺相关的问题，您可以尝试输入：" +
                        "「饮食」、「气候」、「温度」、「湿度」、「日常」、「预防」、「注意」等关键词。","@drawable/home_about_symble",true);
        itemList.add(item);

    }

    /**
     * 初始化RecyclerView
     */
    private void initRecyclerView(){
        RecyclerView.LayoutManager layoutManager=new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.VERTICAL);
        rvChat.setLayoutManager(layoutManager);

        myAdapter=new MyAdapter();
        rvChat.setAdapter(myAdapter);
    }

    /**
     * 设置适配器
     */
    private class MyAdapter extends BaseQuickAdapter<ChatItem, BaseViewHolder> {
        public MyAdapter(){
            super(R.layout.fragment_chat_item,itemList);
        }

        @Override
        protected void convert(@NonNull BaseViewHolder helper, ChatItem item) {
            final int position=helper.getLayoutPosition();

            if(item.leftright){
                helper.setVisible(R.id.chat_left,true);
                helper.setVisible(R.id.chat_right,false);
                helper.setText(R.id.chat_left_time,itemList.get(position).getTime());
                helper.setText(R.id.chat_left_text,itemList.get(position).getText());
            }

            if(!item.leftright){
                helper.setVisible(R.id.chat_left,false);
                helper.setVisible(R.id.chat_right,true);
                helper.setText(R.id.chat_right_time,itemList.get(position).getTime());
                helper.setText(R.id.chat_right_text,itemList.get(position).getText());
                Glide.with(ChatActivity.this).load("https://lztoos.oss-cn-shenzhen.aliyuncs.com/"+url)
                        .into((ImageView) helper.getView(R.id.chat_right_image));
            }
        }
    }
}
